\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder}{\section{strange.\-framework.\-impl.\-Binder Class Reference}
\label{classstrange_1_1framework_1_1impl_1_1_binder}\index{strange.\-framework.\-impl.\-Binder@{strange.\-framework.\-impl.\-Binder}}
}


Collection class for bindings.  


Inheritance diagram for strange.\-framework.\-impl.\-Binder\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=0.768176cm]{classstrange_1_1framework_1_1impl_1_1_binder}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_aa4e977fc31063ca4d0b029b1abe39dad}{delegate void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_aa4e977fc31063ca4d0b029b1abe39dad}{Binding\-Resolver} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding)}\label{classstrange_1_1framework_1_1impl_1_1_binder_aa4e977fc31063ca4d0b029b1abe39dad}

\begin{DoxyCompactList}\small\item\em A handler for resolving the nature of a binding during chained commands. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_aa809b66eeb6dec84b6cbb0b1b80f5b04}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_aa809b66eeb6dec84b6cbb0b1b80f5b04}{Bind$<$ T $>$} ()}\label{classstrange_1_1framework_1_1impl_1_1_binder_aa809b66eeb6dec84b6cbb0b1b80f5b04}

\begin{DoxyCompactList}\small\item\em Bind a \hyperlink{classstrange_1_1framework_1_1impl_1_1_binding}{Binding} Key to a class or interface generic. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_aa10f64af425a6c7321b91d0db75cd4c7}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_aa10f64af425a6c7321b91d0db75cd4c7}{Bind} (object key)}\label{classstrange_1_1framework_1_1impl_1_1_binder_aa10f64af425a6c7321b91d0db75cd4c7}

\begin{DoxyCompactList}\small\item\em Bind a \hyperlink{classstrange_1_1framework_1_1impl_1_1_binding}{Binding} Key to a value. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a63db76e9141c81d2e71b0d9a3c1b0a6b}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a63db76e9141c81d2e71b0d9a3c1b0a6b}{Get\-Binding$<$ T $>$} ()}\label{classstrange_1_1framework_1_1impl_1_1_binder_a63db76e9141c81d2e71b0d9a3c1b0a6b}

\begin{DoxyCompactList}\small\item\em Retrieve a binding based on the provided Type. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a18a6e363f84b590c2660ba320e5563b9}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a18a6e363f84b590c2660ba320e5563b9}{Get\-Binding} (object key)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a18a6e363f84b590c2660ba320e5563b9}

\begin{DoxyCompactList}\small\item\em Retrieve a binding based on the provided object. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_ae134862dc94a741d870652d849705f46}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_ae134862dc94a741d870652d849705f46}{Get\-Binding$<$ T $>$} (object name)}\label{classstrange_1_1framework_1_1impl_1_1_binder_ae134862dc94a741d870652d849705f46}

\begin{DoxyCompactList}\small\item\em Retrieve a binding based on the provided Key (generic)/\-Name combo. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_ac45a17044d65c5143987c8b0a5e0f139}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_ac45a17044d65c5143987c8b0a5e0f139}{Get\-Binding} (object key, object name)}\label{classstrange_1_1framework_1_1impl_1_1_binder_ac45a17044d65c5143987c8b0a5e0f139}

\begin{DoxyCompactList}\small\item\em Retrieve a binding based on the provided Key/\-Name combo. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a3c385fdd591d1decb1334b7cdee0237a}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a3c385fdd591d1decb1334b7cdee0237a}{Unbind$<$ T $>$} ()}\label{classstrange_1_1framework_1_1impl_1_1_binder_a3c385fdd591d1decb1334b7cdee0237a}

\begin{DoxyCompactList}\small\item\em Remove a binding based on the provided Key (generic) \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_af87f713510c782354a6e736976d8cd4f}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_af87f713510c782354a6e736976d8cd4f}{Unbind} (object key)}\label{classstrange_1_1framework_1_1impl_1_1_binder_af87f713510c782354a6e736976d8cd4f}

\begin{DoxyCompactList}\small\item\em Remove a binding based on the provided Key. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a6aa6747c28bb0a1bdb529c5ccd0422c7}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a6aa6747c28bb0a1bdb529c5ccd0422c7}{Unbind$<$ T $>$} (object name)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a6aa6747c28bb0a1bdb529c5ccd0422c7}

\begin{DoxyCompactList}\small\item\em Remove a binding based on the provided Key (generic) / Name combo. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a821d230985f6c00af9289209d50ef237}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a821d230985f6c00af9289209d50ef237}{Unbind} (object key, object name)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a821d230985f6c00af9289209d50ef237}

\begin{DoxyCompactList}\small\item\em Remove a binding based on the provided Key / Name combo. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a43b2b8bba97c5d836d10fb0f03a3744f}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a43b2b8bba97c5d836d10fb0f03a3744f}{Unbind} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a43b2b8bba97c5d836d10fb0f03a3744f}

\begin{DoxyCompactList}\small\item\em Remove the provided binding from the \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder}{Binder}. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a09e00eb1f824e641fa287735a9f3b834}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a09e00eb1f824e641fa287735a9f3b834}{Remove\-Value} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding, object value)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a09e00eb1f824e641fa287735a9f3b834}

\begin{DoxyCompactList}\small\item\em Remove a select value from the given binding. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a4cec7503f4f76e4f132665d89db49d99}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a4cec7503f4f76e4f132665d89db49d99}{Remove\-Key} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding, object key)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a4cec7503f4f76e4f132665d89db49d99}

\begin{DoxyCompactList}\small\item\em Remove a select key from the given binding. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a834c55607151d7a30856e6b6f6a8df1e}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a834c55607151d7a30856e6b6f6a8df1e}{Remove\-Name} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding, object name)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a834c55607151d7a30856e6b6f6a8df1e}

\begin{DoxyCompactList}\small\item\em Remove a select name from the given binding. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_aa9e1ffe31a00f92c3edbbdc452301c03}{virtual \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_aa9e1ffe31a00f92c3edbbdc452301c03}{Get\-Raw\-Binding} ()}\label{classstrange_1_1framework_1_1impl_1_1_binder_aa9e1ffe31a00f92c3edbbdc452301c03}

\begin{DoxyCompactList}\small\item\em Generate an unpopulated I\-Binding in whatever concrete form the \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder}{Binder} dictates. \end{DoxyCompactList}\item 
virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a59b9ca38325bf6cf4c55aa309e92d00c}{Resolve\-Binding} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding, object key)
\begin{DoxyCompactList}\small\item\em This method places individual Bindings into the bindings Dictionary as part of the resolving process. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_ae43511788f7ce5bc0c840816c935036d}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_ae43511788f7ce5bc0c840816c935036d}{On\-Remove} ()}\label{classstrange_1_1framework_1_1impl_1_1_binder_ae43511788f7ce5bc0c840816c935036d}

\begin{DoxyCompactList}\small\item\em The \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder}{Binder} is being removed Override this method to clean up remaining bindings. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a8f463a4edc3e3bbdaac51a8aaa5d240f}{virtual void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a8f463a4edc3e3bbdaac51a8aaa5d240f}{resolver} (\hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a8f463a4edc3e3bbdaac51a8aaa5d240f}

\begin{DoxyCompactList}\small\item\em The default handler for resolving bindings during chained commands. \end{DoxyCompactList}\item 
void \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a6150d8762ded854628d21c5e35489adc}{register\-Name\-Conflict} (object key, \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} new\-Binding, \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} existing\-Binding)
\begin{DoxyCompactList}\small\item\em Take note of bindings that are in conflict. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a541607fe739b65b5f28b4152bec49a46}{bool \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a541607fe739b65b5f28b4152bec49a46}{is\-Conflict\-Cleared} (Dictionary$<$ \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding}, object $>$ dict, \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} binding)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a541607fe739b65b5f28b4152bec49a46}

\begin{DoxyCompactList}\small\item\em Returns true if the provided binding and the binding in the dict are no longer conflicting. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a1a426d227eeaa00823a744472c219698}{void {\bfseries clear\-Conflict} (object key, object name, Dictionary$<$ \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding}, object $>$ dict)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a1a426d227eeaa00823a744472c219698}

\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a1550cafde3f21467d63dae64e1078fb0}{T\mbox{[}$\,$\mbox{]} {\bfseries splice\-Value\-At$<$ T $>$} (int splice\-Pos, object\mbox{[}$\,$\mbox{]} object\-Value)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a1550cafde3f21467d63dae64e1078fb0}

\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a349b12bdc879e7f465a7cf7dfeb3b5b4}{object\mbox{[}$\,$\mbox{]} \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a349b12bdc879e7f465a7cf7dfeb3b5b4}{splice\-Value\-At} (int splice\-Pos, object\mbox{[}$\,$\mbox{]} object\-Value)}\label{classstrange_1_1framework_1_1impl_1_1_binder_a349b12bdc879e7f465a7cf7dfeb3b5b4}

\begin{DoxyCompactList}\small\item\em Remove the item at splice\-Pos from the list object\-Value. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
Dictionary$<$ object, Dictionary\\*
$<$ object, \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding} $>$ $>$ \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder_a3b76e3cb4822c1f8732fd45fbd4d1802}{bindings}
\begin{DoxyCompactList}\small\item\em Dictionary of all bindings Two-\/layer keys. \end{DoxyCompactList}\item 
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a83af5663ac69ba271f18c03fdd9e21d2}{Dictionary$<$ object, Dictionary\\*
$<$ \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binding}{I\-Binding}, object $>$ $>$ {\bfseries conflicts}}\label{classstrange_1_1framework_1_1impl_1_1_binder_a83af5663ac69ba271f18c03fdd9e21d2}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Collection class for bindings. 

Binders are a collection class (akin to Array\-List and Dictionary) with the specific purpose of connecting lists of things that are not necessarily related, but need some type of runtime association. Binders are the core concept of the Strange\-Io\-C framework, allowing all the other functionality to exist and further functionality to easily be created.

Think of each \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder}{Binder} as a collection of causes and effects, or actions and reactions. If the Key action happens, it triggers the Value action. So, for example, an Event may be the Key that triggers instantiation of a particular class. 

\subsection{Member Function Documentation}
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a6150d8762ded854628d21c5e35489adc}{\index{strange\-::framework\-::impl\-::\-Binder@{strange\-::framework\-::impl\-::\-Binder}!register\-Name\-Conflict@{register\-Name\-Conflict}}
\index{register\-Name\-Conflict@{register\-Name\-Conflict}!strange::framework::impl::Binder@{strange\-::framework\-::impl\-::\-Binder}}
\subsubsection[{register\-Name\-Conflict}]{\setlength{\rightskip}{0pt plus 5cm}void strange.\-framework.\-impl.\-Binder.\-register\-Name\-Conflict (
\begin{DoxyParamCaption}
\item[{object}]{key, }
\item[{{\bf I\-Binding}}]{new\-Binding, }
\item[{{\bf I\-Binding}}]{existing\-Binding}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}}}\label{classstrange_1_1framework_1_1impl_1_1_binder_a6150d8762ded854628d21c5e35489adc}


Take note of bindings that are in conflict. 

This occurs routinely during fluent binding, but will spark an error if Get\-Binding is called while this \hyperlink{classstrange_1_1framework_1_1impl_1_1_binder}{Binder} still has conflicts. \hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a59b9ca38325bf6cf4c55aa309e92d00c}{\index{strange\-::framework\-::impl\-::\-Binder@{strange\-::framework\-::impl\-::\-Binder}!Resolve\-Binding@{Resolve\-Binding}}
\index{Resolve\-Binding@{Resolve\-Binding}!strange::framework::impl::Binder@{strange\-::framework\-::impl\-::\-Binder}}
\subsubsection[{Resolve\-Binding}]{\setlength{\rightskip}{0pt plus 5cm}virtual void strange.\-framework.\-impl.\-Binder.\-Resolve\-Binding (
\begin{DoxyParamCaption}
\item[{{\bf I\-Binding}}]{binding, }
\item[{object}]{key}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{classstrange_1_1framework_1_1impl_1_1_binder_a59b9ca38325bf6cf4c55aa309e92d00c}


This method places individual Bindings into the bindings Dictionary as part of the resolving process. 

Note that while some Bindings may store multiple keys, each key takes a unique position in the bindings Dictionary.

Conflicts in the course of fluent binding are expected, but Get\-Binding will throw an error if there are any unresolved conflicts. 

Implements \hyperlink{interfacestrange_1_1framework_1_1api_1_1_i_binder_a973c34bf47d4101bc97da3572b4b3f75}{strange.\-framework.\-api.\-I\-Binder}.



Reimplemented in \hyperlink{classstrange_1_1extensions_1_1injector_1_1impl_1_1_cross_context_injection_binder_ad93ea865f14a6249af575633f6472a7e}{strange.\-extensions.\-injector.\-impl.\-Cross\-Context\-Injection\-Binder}, and \hyperlink{classstrange_1_1extensions_1_1command_1_1impl_1_1_signal_command_binder_a8968e1632b03d1f9223f8e66e721327f}{strange.\-extensions.\-command.\-impl.\-Signal\-Command\-Binder}.



\subsection{Member Data Documentation}
\hypertarget{classstrange_1_1framework_1_1impl_1_1_binder_a3b76e3cb4822c1f8732fd45fbd4d1802}{\index{strange\-::framework\-::impl\-::\-Binder@{strange\-::framework\-::impl\-::\-Binder}!bindings@{bindings}}
\index{bindings@{bindings}!strange::framework::impl::Binder@{strange\-::framework\-::impl\-::\-Binder}}
\subsubsection[{bindings}]{\setlength{\rightskip}{0pt plus 5cm}Dictionary$<$object, Dictionary$<$object, {\bf I\-Binding}$>$ $>$ strange.\-framework.\-impl.\-Binder.\-bindings\hspace{0.3cm}{\ttfamily [protected]}}}\label{classstrange_1_1framework_1_1impl_1_1_binder_a3b76e3cb4822c1f8732fd45fbd4d1802}


Dictionary of all bindings Two-\/layer keys. 

First key to individual \hyperlink{classstrange_1_1framework_1_1impl_1_1_binding}{Binding} keys, then to \hyperlink{classstrange_1_1framework_1_1impl_1_1_binding}{Binding} names. (This wouldn't be required if Unity supported Tuple or Hash\-Set.) 

The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
Strange\-Io\-C/scripts/strange/framework/impl/Binder.\-cs\end{DoxyCompactItemize}
